package com.itheima.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author by itheima
 * @Date 2021/8/20
 * @Description 定义mybatis的工具类
 */
public class MybatisUtil {

    //定义全局的会话工厂属性
    private static SqlSessionFactory factory;

    /**
     * 通过静态代码块，使得核心配置文件只加载一次，
     * 避免了io开销
     */
    static {
        //1.获取核心配置文件的流对象
        InputStream in = null;
        try {
            in = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        factory = new SqlSessionFactoryBuilder().build(in);
        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 封装获取会话对象的方法
     * @return
     */
    public static SqlSession getSession(){
        //设置事务自动提交
        //true:自动提交 false:默认值，表示手动提交
        return factory.openSession(true);
    }

    /**
     * 获取代理对象的方法
     * @param mapperClass
     * @param <T>
     * @return ThreadLocal
     */
//    public static <T> T getMapper(Class<T> mapperClass){
//       return getSession().getMapper(mapperClass);
//    }





}
